Vergrijzing: de ineenstorting van de economie#
Elias Dekker (14638487), Thien An Pham (14263823) & Vincent Schoonderwoerd (13753002) | G3#
Introductie#
Door de stijgende welvaart zijn de medische zorg en hygiene in ontwikkelde landen de afgelopen jaren sterk verbeterd. Dat heeft ervoor gezorgd dat mensen steeds ouder worden. Op zich is dat een goede ontwikkeling, maar daardoor ontstaat er een nieuw probleem: vergrijzing. Vergrijzing houdt in dat de gemiddelde leeftijd stijgt, en dat de verhouding tussen de ouderen en de werkenden verandert; het aantal ouderen/niet-werkenden neemt toe en het aantal werkenden neemt juist af.
Dat vormt een probleem voor de maatschappij, want vergrijzing heeft invloed op de arbeidsmarkt, belastinginkomsten, zorgkosten en dus ook op de economie.
We bekijken de vergrijzing in Nederland vanuit twee perspectieven:
Perspectief 1: vergrijzing is een nationaal probleem.
Er zijn veranderingen in de samenleving nodig om de problemen die vergrijzing met zich meebrengt op te lossen. Als dat niet gebeurt, dan kan dat ernstige gevolgen hebben voor de economie.
Bij toenemende vergrijzing wordt het aandeel niet-werkenden steeds groter. Hierdoor stijgen de kosten, door toenemende vraag naar sociale voorzieningen, en dalen de inkomsten, door een kleinere arbeidsmarkt.
Perspectief 2: vergrijzing is een regionaal probleem.
Jonge mensen trekken vanuit het platteland naar de grote steden om daar te studeren en te werken, terwijl ouderen achter blijven. Veel voorzieningen zouden daardoor onder druk komen te staan. Denk bijvoorbeeld aan winkels die een lagere omzet draaien en verder kan er ook niet voldaan worden aan de zorgbehoefte van de overgebleven ouderen in deze krimpregio’s.
De arbeidsmarkt en consumentenmarkt zullen krimpen in die regio’s, waardoor de economische groei eerst stagneert en vervolgens daalt.
Met data uit de hierondergenoemde datasets hebben we voor beide perspectieven visualisaties gemaakt. De visualisaties bestaan uit verschillende typen grafieken, en aan de hand van de visualisaties hebben we beide perspectieven beargumenteerd.
Dataset en preprocessing#
Show code cell source
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
import matplotlib.pyplot as plt
import json
import ipywidgets as widgets
from ipywidgets import interact, IntSlider
from IPython.display import display
from plotly.subplots import make_subplots
bevolking = pd.read_csv("Bevolking_op_1_januari_en_gemiddeld__geslacht__leeftijd_en_regio_22062023_182818.csv", sep=';')
levensverwachting = pd.read_csv("Levensverwachting.csv", sep=';',decimal=',')
grijzedruk = pd.read_csv('Landelijke_grijzedruk.csv', sep=';')
wlz = pd.read_csv('Aantal_wlz.csv', sep=';')
uitkeringen = pd.read_csv('Uitkeringen_draft.csv', sep=";")
Provinciale_regionalegroei = pd.read_csv('Regionale_economischegroei_2019.csv', sep=';')
Regionale_grijzedruk = pd.read_csv('Regionale_grijzedruk_2019.csv', sep=';')
Provinciale_economischegroei = pd.read_csv('Provinciale_regionalegroei_draft.csv', sep=";")
bevolking = bevolking[bevolking["Leeftijd"].str.contains("jaar of ouder") == False]
result = pd.concat([bevolking, levensverwachting, grijzedruk, wlz, uitkeringen, Provinciale_regionalegroei, Regionale_grijzedruk, Provinciale_economischegroei], ignore_index=True, sort=False)
result['Perioden'] = result['Perioden'].apply(str)
result['Perioden'] = result['Perioden'].str.replace('JJ00', '')
result['Perioden'] = result['Perioden'].astype(str)
result['RegioS'] = result['RegioS'].str.strip()
result.to_csv('result.csv')
We hebben negen dataset-bestanden van het CBS gebruikt. Deze datasets kunnen op de website al op onderwerp (variabelen), regio en perioden geselecteerd worden. De variabelen die we gebruiken zijn:
Jaartallen (Discrete, Ordinaal)
Aantal mannen (Discrete, Ratio)
Aantal vrouwen (Discrete, Ratio)
Levensverwachting (Discrete, Ratio)
Totaal uitkeringen (Discrete, Ratio)
Zorgwetten (Discrete, Ratio)
Pensioen (Discrete, Ratio)
Grijze druk (Discrete, Ratio)
Volumeverandering bbp (Discrete, Ratio)
Regio (Corop & Provincie) (Discrete, Nominaal)
De datasets worden opgeschoond door de volgende operaties: puntkomma’s vervangen door komma’s, alle spaties verwijderen en de variabele van jaar opschonen (“2010JJ00” veranderen naar “2010”). De verschillende datasets worden dan samengevoegd om één dataframe te vormen.
Perspectief 1:#
Veranderende samenstelling van de Nederlandse bevolking#
Dit perspectiefverhaal begint in 1950, tijdens de wederopbouw van net na de Tweede Wereldoorlog. In die tijd werd een groot aantal mensen geboren, de zogenaamde babyboomers. Door de vreugde van de bevrijding, stichtten veel mensen een gezin.
Tijdens de jaren daarna, daalde het geboortecijfer door de stijgende welvaart en de introductie van anticonceptiemiddelen. Hierdoor hadden mensen de mogelijkheid om bewust te kiezen wanneer ze kinderen wilden krijgen. Daarnaast daalde het aantal ongeplande zwangerschappen.
Maar daardoor zijn er de afgelopen jaren weining kinderen geboren. Hierdoor is de grijze druk gestegen, dit is de verhouding tussen het aantal 65-plussers en het aantal mensen van 20-64 jaar. De groep werkenden zal dus een grote groep ouderen moeten onderhouden. Het is dus noodzakelijk dat de overheid maatregelen neemt, zoals het creëren van duurzame systemen voor gezondheidszorg, sociale zekerheden en pensioenen, maar ook het stimuleren van participatie vanuit de oudere generatie.
Show code cell source
bevolking = result[result['Leeftijd'].str.contains("jaar", na = False)]
bevolking_mannen = bevolking[['Perioden', 'Leeftijd', 'Mannen']]
bevolking_vrouwen = bevolking[['Perioden', 'Leeftijd', 'Vrouwen']]
bevolking_mannen = bevolking_mannen[bevolking_mannen['Mannen'] != '.']
bevolking_vrouwen = bevolking_vrouwen[bevolking_vrouwen['Vrouwen'] != '.']
bevolking_mannen['Mannen'] = pd.to_numeric(bevolking_mannen['Mannen'])
bevolking_vrouwen['Vrouwen'] = pd.to_numeric(bevolking_vrouwen['Vrouwen'])
bevolking_mannen['Mannen'] = - bevolking_mannen['Mannen']
fig = go.Figure()
num_steps = 36
for step in bevolking['Perioden'].unique():
fig.add_trace(go.Bar(visible=False, y=bevolking_mannen[bevolking_mannen['Perioden'] == step]['Leeftijd'], x=bevolking_mannen[bevolking_mannen['Perioden'] == step]['Mannen'], orientation='h', name='Mannen'))
for step in bevolking['Perioden'].unique():
fig.add_trace(go.Bar(visible=False, y=bevolking_vrouwen[bevolking_vrouwen['Perioden'] == step]['Leeftijd'], x=bevolking_vrouwen[bevolking_vrouwen['Perioden'] == step]['Vrouwen'], orientation='h', name='Vrouwen'))
fig.data[0].visible = True
fig.data[36].visible = True
steps = []
for i in range(num_steps):
step = dict(
method="update",
args=[{"visible": [False] * len(fig.data)},
{"title": "Bevolkingspiramide: " + str(i + 1988)}],
label=str(i + 1988))
step["args"][0]["visible"][i] = True
step["args"][0]["visible"][i + num_steps] = True
steps.append(step)
sliders = [dict(
active=0,
currentvalue={"prefix": "Jaar: "},
steps=steps
)]
fig.update_layout(title = 'Bevolkingspiramide: 1988',
sliders=sliders,
xaxis = dict(tickvals = [-100000, -50000,
0, 50000, 100000],
ticktext = ['100.000', '50.000',
'0', '50.000', '100.000'])
)
fig.show()
Figuur 1: Deze bevolkingspiramide visualiseert de verdeling van de bevolking op basis van leeftijd en geslacht in Nederland. De x-as toont het aantal mensen. De y-as bevat de leeftijdsgroepen. Er is een slider aanwezig waarmee het jaartal van de bevolkingspiramide kan worden aangepast. Door de slider te verplaatsen is te zien dat de verhouding tussen de werkenden en niet-werkenden steeds kleiner wordt.
De jaren na de oorlog waren er veel veranderingen: economische groei, verbeterde gezondheidszorg en betere levensomstandigheden. Al deze veranderingen leiden tot een hogere levensverwachting.
Het voortdurend toenemen van de levensverwachting leidt tot een steeds grotere groep ouderen. Dit heeft grote implicaties, van de gezondheidszorg tot het arbeidsmarktbeleid. De groep ouderen die onderhouden moeten worden, wordt dus steeds groter.
Show code cell source
levensverwachting = result.loc[result['Jaar'].notnull(), ['Totaal mannen en vrouwen','Mannen', 'Vrouwen', 'Jaar']]
Totaal = go.Scatter(
x=levensverwachting['Jaar'],
y=levensverwachting['Totaal mannen en vrouwen'],
mode='lines',
name='Totaal mannen en vrouwen'
)
Mannen = go.Scatter(
x=levensverwachting['Jaar'],
y=levensverwachting['Mannen'],
mode='lines',
name='Mannen'
)
Vrouwen = go.Scatter(
x=levensverwachting['Jaar'],
y=levensverwachting['Vrouwen'],
mode='lines',
name='Vrouwen'
)
layout = go.Layout(
title='Levensverwachting in Nederland',
xaxis=dict(title='Jaar'),
yaxis=dict(title='Levensverwachting (jaren)'),
hovermode='x unified'
)
fig = go.Figure(data=[Totaal, Mannen, Vrouwen], layout=layout)
fig.show()
Figuur 2: De x-as toont de jaartallen 1950 t/m 2022. De y-as is de levensverwachting. In de grafiek is te zien dat de levensverwachting sinds 1950 bijna elk jaar stijgt.
Nederland vergrijst#
Door de toenemende vergrijzing zal ook het aantal ouderen met chronische aandoeningen, zowel fysiek als mentaal, toenemen. Met name dementie zal zorgen voor veel sterfte en een hoge ziektelast. Ook zal het aantal ouderen met multimorbiditeit (meerdere aandoeningen tegelijk) toenemen en daardoor ook de vraag naar complexere zorg. Daarnaast hebben ouderen een grotere kans op vallen, gezichtsstoornissen en incontinentie, wat ook kan leiden tot behoefte aan zorg.
De Wet langdurige zorg (Wlz), voorheen Algemene Wet Bijzondere Ziektekosten (AWBZ), regelt intensieve zorg voor onder andere kwetsbare ouderen. De eerdergenoemde zaken maken ouderen kwetsbaar, wat zal resulteren in een toename van ouderen in de Wlz. Iedereen in Nederland betaalt via premies en belastingen mee aan de Wlz. Het grootste deel van de 65-plussers werkt niet. Door de vergrijzing, worden er steeds meer zorgkosten gemaakt, en zijn er dus in verhouding steeds minder mensen die voor de financiering hiervoor zorgen. Dat zal leiden tot hogere premies en belastingen.
Show code cell source
grijzedruk = result.loc[result['GrijzeDruk_22'].notnull(), ['Perioden','GrijzeDruk_22']]
wlz = result.loc[result['PersonenVan80JaarOfOuder_51'].notnull(), ['Perioden','PersonenVan80JaarOfOuder_51']]
grijzedruk['Perioden'] = grijzedruk['Perioden'].astype('int')
grijzedruk = grijzedruk.loc[grijzedruk['Perioden'] > 2000]
fig = make_subplots(specs=[[{"secondary_y": True}]])
fig.add_trace(
go.Scatter(x=grijzedruk['Perioden'], y=grijzedruk['GrijzeDruk_22'], name="Grijze druk"),
secondary_y=False,
)
fig.add_trace(
go.Scatter(x=wlz['Perioden'], y=wlz['PersonenVan80JaarOfOuder_51'], name="Aantal 80-plussers in de Wlz-gefinancierde zorg"),
secondary_y=True,
)
fig.update_layout(
title_text="Grijze druk & aantal 80-plussers in de Wlz",
hovermode='x unified'
)
fig.update_xaxes(title_text="Jaar")
fig.update_yaxes(title_text="Grijze druk (%)", secondary_y=False)
fig.update_yaxes(title_text="Aantal", secondary_y=True)
fig.show()
Figuur 3: De x-as toont de jaartallen. Er zijn twee y-assen. De rechter y-as hoort bij de grijze druk en is in procenten. De linker y-as hoort bij het aantal 80-plussers in de Wet landurige zorg (Wlz) en is in absolute aantallen. In de grafiek is te zien dat de grijze druk en het aantal 80-plussers dat in de Wlz zit over de jaren heen geleidelijk stijgen.
Doordat de grijze druk stijgt, wordt het aandeel van uitkeringen dat naar de ouderen gaat steeds groter. Er is dus een stijgende behoefte aan zorg en ondersteuning. Hierdoor is er wel minder geld over voor anders sociale voorzieningen.
Show code cell source
totaal = ['T001397']
totaal = result[result['Uitkeringen'].isin(totaal)]
aow = ['A045116']
aow = result[result['Uitkeringen'].isin(aow)]
ouderen = ['A045119', 'A045137', 'A045121']
ouderen = result[result['Uitkeringen'].isin(ouderen)]
zorgwetten=ouderen.groupby('Perioden')['SocialeUitkeringen_1'].sum()
zorgwetten=zorgwetten.reset_index()
selected_data = totaal.loc[totaal['Uitkeringen'] == 'T001397']
fig = go.Figure()
fig.add_trace(go.Scatter(x=selected_data['Perioden'], y=selected_data['SocialeUitkeringen_1'], mode='lines', fill='tonexty',stackgroup='one', name="Totale uitkeringen"))
fig.add_trace(go.Scatter(x=aow['Perioden'], y=aow['SocialeUitkeringen_1'], mode='lines', fill='tonexty',stackgroup='two', name="Pensioen"))
fig.add_trace(go.Scatter(x=zorgwetten['Perioden'], y=zorgwetten['SocialeUitkeringen_1'], mode='lines', fill='tonexty', stackgroup='two', name="Zorgwetten"))
fig.update_layout(
title="Besteding aan uitkeringen",
yaxis_title="Uitkering (Miljard)",
xaxis_title="Jaar",
hovermode='x unified',
yaxis = dict(tickvals = [0, 20000, 40000, 60000, 80000, 100000, 120000, 140000, 160000, 180000],
ticktext = ['0', '20','40', '60', '80', '100', '120', '140', '160', '180'])
)
fig.show()
Figuur 4: De x-as toont de jaartallen. De y-as toont de bedragen in euro’s die de overheid uitgeeft aan uitkeringen. Er is te zien dat er in 2006 en 2015 door zorgwetten fors meer geld naar ouderen ging. Daardoor wordt het aandeel van uitkeringen dat naar ouderen gaat steeds groter.
Perspectief 2:#
Vergrijzing per regio in Nederland#
De randen van Nederland, met hun kleinere steden en landelijke gebieden, hebben historisch gezien een oudere bevolking in vergelijking met de Randstad. Dit komt deels doordat jongere mensen vaak verhuizen naar de grote steden voor betere werkgelegenheid en kansen. Maar vergrijzing in de randen van Nederland wordt ook versterkt doordat ouderen er vaak voor kiezen om in de omgeving te blijven wonen waar ze vaak een groot deel van hun leven hebben doorgebracht.
Show code cell source
corop = json.load(open('coropgebied_gegeneraliseerd_2021.geojson', 'r'))
for feature in corop['features']:
feature['id'] = feature['properties']['statcode']
fig = px.choropleth(result, locations='RegioS', geojson=corop, color='GrijzeDruk_24',labels={'GrijzeDruk_24':'Grijze druk (%)'})
fig.update_geos(fitbounds="locations", visible=False)
fig.update_layout(
title="Regionale grijze druk")
fig.show()
Figuur 5: Van elk COROP-gebied is de grijze druk weergegeven. In de grafiek is te zien dat gebieden aan de randen van Nederland, zoals Zeeuwsch-Vlaanderen en Oost-Groningen, een hogere grijze druk hebben dan gebieden in de randstad, zoals Amsterdam en Utrecht.
Vergrijzing heeft daarnaast ook invloed op de economie. Doordat jonge geschoolde werknemers naar de grote steden verhuizen en ouderen met pensioen gaan, krimpt de arbeidsmarkt. Door het gebrek aan geschoolde werknemers hebben bedrijven ook moeite om te innoveren en te groeien.
Verder hebben ouderen vaak behoefte aan sociale voorzieningen en gezondheidszorg. Deze toenemende vraag kan de gezondheidsinfrastructuur van lokale gemeenten belasten. Hierdoor moeten gemeenten meer geld uitgeven voor het verbeteren en uitbreiden van deze voorzieningen om aan de vraag te kunnen voldoen.
Show code cell source
fig2 = px.choropleth(result, locations='RegioS', geojson=corop, color='BbpVolumemutaties_3',labels={'BbpVolumemutaties_3':'Volumeverandering bbp (%)'})
fig2.update_geos(fitbounds="locations", visible=False)
fig2.update_layout(
title="Regionale economische groei")
fig2.show()
Figuur 6: Van elk COROP-gebied is de volumegroei van het bruto binnenlands product (bbp) weergegeven. Het bbp is een maat voor de omvang van de economie en de volumeverandering ten op zichte van 2018. In de grafiek is te zien dat gebieden aan de randen van Nederland, zoals Zeeuwsch-Vlaanderen en Oost-Groningen, economisch krimpen en dat de gebieden in de randstad, zoals Amsterdam en Utrecht, economisch groeien.
Doordat jongere mensen van de randen van Nederland naar de Randstad verhuizen, stijgt de economische groei van provincies met deze aantrekkelijke gebieden. De provincies zonder deze gebieden ervaren hierdoor wel een lagere economische groei.
Dit toont aan dat het belangrijk is om evenwichtige regionale ontwikkelingen te hebben, waardoor elke Nederlander economische groei ervaart.
Show code cell source
randstad_provincies = ['PV26', 'PV27', 'PV28']
randstad_provincies = result[result['RegioS'].isin(randstad_provincies)]
de_rest = ['PV20', 'PV21', 'PV22', 'PV23', 'PV25', 'PV29', 'PV31']
de_rest = result[result['RegioS'].isin(de_rest)]
randstad_provincies=randstad_provincies.groupby('Perioden')['BbpVolumemutaties_3'].mean()
randstad_provincies=randstad_provincies.reset_index()
de_rest=de_rest.groupby('Perioden')['BbpVolumemutaties_3'].mean()
de_rest=de_rest.reset_index()
fig = go.Figure()
fig.add_trace(go.Scatter(x=randstad_provincies['Perioden'], y=randstad_provincies['BbpVolumemutaties_3'], mode='lines', name="randstad"))
fig.add_trace(go.Scatter(x=de_rest['Perioden'], y=de_rest['BbpVolumemutaties_3'], mode='lines', name="de rest"))
fig.update_layout(
title="Verandering van bbp",
xaxis_title="Jaar",
hovermode='x unified')
fig.show()
Figuur 7: De x-as toont de jaartallen 1995 t/m 2021. De y-as toont de volumegroei van het bbp in procenten. Er is te zien dat tussen 2012 en 2019 de provincies in de randstad, zoals Noord-Holland en Utrecht, een hogere volumegroei hebben dan de provincies buiten de randstad, zoals Zeeland en Drenthe.
Reflectie#
Voor twee grafieken, het aantal 80-plussers in de Wlz gefinancierde zorg en de grijze druk, hadden we specifiek om feedback gevraagd tijdens de presentatieronde in het werkcollege.
Wij vonden het twee matig interessante eenlijnsgrafieken en daarom wilden wij graag suggesties om beide grafieken wat interessanter te maken. Als feedback kregen we de tip dat we beide grafieken konden samenvoegen tot één grafiek. Door het samenvoegen is de relatie tussen de toenemende grijze druk en het aantal tachtig-plussers in de Wlz-gefinancierde zorg sneller te zien en is het verhaal compacter.
Voor de rest vond de TA en de andere groep dat we goede data en mooie visualisaties hadden.
Taakverdeling#
An heeft de gevonden datasets opgeschoond en gecombineerd, GitHub repository en GitHub-pagina gemaakt, de introductie geschreven, de grafieken ‘Besteding aan uitkeringen’, ‘Regionale grijze druk’, ‘Regionale economische groei’ en ‘Verandering van bbp’ gemaakt met bijbehorende stukken tekst.
Elias heeft perspectief 1 en 2 geschreven en de grafieken ‘Bevolkingspiramide’ en ‘Levensverwachting in Nederland’ gemaakt met bijbehorende stukken tekst.
Vincent heeft de reflectie en taakverdeling geschreven, de grafiek ‘Grijze druk & 80-plussers in de Wlz’ gemaakt met bijbehorende stukken tekst en de website nagekeken op lay-out, taal en fouten.
Bijlage#
Generatieve AI (ChatGPT met GPT 3.5) wordt gebruikt om het maken van dit document, zoals weergegeven in de onderstaande tabel.
Reden |
Onderdelen |
Prompts |
|---|---|---|
Brainstormen van onderzoeksideëen |
Alle secties |
“Leg uit waarom het geboortecijfer na de babyboom daalde.” & “Leg uit waarom de grijze druk in de Randstad lager is dan in de rest van Nederland.” |
Verbeteren van leesbaarheid |
Alle secties |
“Schrijf deze tekst opnieuw om de leesbaarheid te verbeteren.” |
Alternatieve zinnen |
Alle secties |
“Parafraseer dit stuk tekst om de helderheid van de informatie te verbeteren.” |
Tabel 1: Gebruik van generatieve AI.